package com.arica.mq.consumer.processor;

import com.arica.framework.dto.MqConfigDTO;
import org.apache.rocketmq.common.message.Message;

import java.util.List;

public interface MessageProcessor<T> {

    /**
     * 业务核心处理方法
     **/
    void process(T data);

    /**
     * 该业务需不需要做幂等
     ***/
    boolean needIdempotent();

    /**
     * process的唯一type
     **/
    String getProcessType();

    /***
     *获取业务数据类型
     ***/
    T convertData(Object sourceData);

    /**
     * 获取业务消息的唯一key，用于保证消息消费幂等
     ***/
    String getBusinessKey(T data, Message message);

    /**
     * 获取processos和topic的绑定关系
     ***/
    List<MqConfigDTO> getMqConfig();

}
